package com.ruoyi.qif.domain;

import java.math.BigDecimal;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;

/**
 * 琦风公寓-每月账单对象 qif_bill
 *
 * @author David
 * @date 2025-10-10
 */
public class QifBill extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 账单id */
    private Long billId;

    /** 单元号 */
    @Excel(name = "单元号")
    private String unit;

    /** 房间id */
    @Excel(name = "房间id")
    private Long roomId;

    /** 房间号 */
    @Excel(name = "房间号")
    private String roomNum;

    /** 租金 */
    @Excel(name = "租金")
    private BigDecimal rent;

    /** 押金 */
    @Excel(name = "押金")
    private BigDecimal deposit;

    /** 房卡押金 */
    @Excel(name = "房卡押金")
    private BigDecimal keyCard;

    /** 交租日 */
    @Excel(name = "交租日")
    private Integer rentPayDate;

    /** 上月水表读数 */
    @Excel(name = "上月水表读数")
    private Long lastMonthWater;

    /** 本月水表读数 */
    @Excel(name = "本月水表读数")
    private Long thisMonthWater;

    /** 实际用水量 */
    @Excel(name = "实际用水量")
    private Long waterUsage;

    /** 水单价 */
    @Excel(name = "水单价")
    private BigDecimal waterUnitPrice;

    /** 水费 */
    @Excel(name = "水费")
    private BigDecimal waterRate;

    /** 上月电表读数 */
    @Excel(name = "上月电表读数")
    private Long lastMonthElectricity;

    /** 本月电表读数 */
    @Excel(name = "本月电表读数")
    private Long thisMonthElectricity;

    /** 实际用电量 */
    @Excel(name = "实际用电量")
    private Long electricityUsage;

    /** 电单价 */
    @Excel(name = "电单价")
    private BigDecimal electricityUnitPrice;

    /** 电费 */
    @Excel(name = "电费")
    private BigDecimal electricityBill;

    /** 卫生费 */
    @Excel(name = "卫生费")
    private BigDecimal sanitationFee;

    /** 应收款 */
    @Excel(name = "应收款")
    private BigDecimal receivable;

    /** 实收款 */
    @Excel(name = "实收款")
    private BigDecimal actualPay;

    /** 是否结算(0：是 1：否) */
    @Excel(name = "是否结算(0：是 1：否)")
    private String isSettlement;

    /** 房间状态(0:在租,1:逾期,2:维修,3:空房,4:续住,5新租) */
    @Excel(name = "房间状态(0:在租,1:逾期,2:维修,3:空房,4:续住,5新租)")
    private String roomStatus;

    /** 账单日期 */
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    @Excel(name = "账单日期", width = 30, dateFormat = "yyyy-MM-dd")
    private Date billDate;

    /** 账单图片 */
    @Excel(name = "账单图片")
    private String billChart;
    /** 账单编号 */
    @Excel(name = "账单编号")
    private Long billNumber;

    /** 删除标志（0代表存在 2代表删除） */
    private String delFlag;
    // 用于接收前端传递的多选交租日（逗号分隔字符串）
    private String rentPayDates;
    // 用于接收前端查询的年月（非数据库字段）
    private Integer queryYear;
    private Integer queryMonth;
    public Integer getQueryYear() {
        return queryYear;
    }
    public void setQueryYear(Integer queryYear) {
        this.queryYear = queryYear;
    }
    public Integer getQueryMonth() {
        return queryMonth;
    }
    public void setQueryMonth(Integer queryMonth) {
        this.queryMonth = queryMonth;
    }
    // getter + setter
    public String getRentPayDates() {
        return rentPayDates;
    }
    public void setRentPayDates(String rentPayDates) {
        this.rentPayDates = rentPayDates;
    }
    public void setBillId(Long billId)
    {
        this.billId = billId;
    }

    public Long getBillId()
    {
        return billId;
    }

    public void setUnit(String unit)
    {
        this.unit = unit;
    }

    public String getUnit()
    {
        return unit;
    }

    public void setRoomId(Long roomId)
    {
        this.roomId = roomId;
    }

    public Long getRoomId()
    {
        return roomId;
    }

    public void setRoomNum(String roomNum)
    {
        this.roomNum = roomNum;
    }

    public String getRoomNum()
    {
        return roomNum;
    }

    public void setRent(BigDecimal rent)
    {
        this.rent = rent;
    }

    public BigDecimal getRent()
    {
        return rent;
    }

    public void setDeposit(BigDecimal deposit)
    {
        this.deposit = deposit;
    }

    public BigDecimal getDeposit()
    {
        return deposit;
    }

    public void setKeyCard(BigDecimal keyCard)
    {
        this.keyCard = keyCard;
    }

    public BigDecimal getKeyCard()
    {
        return keyCard;
    }

    public void setRentPayDate(Integer rentPayDate)
    {
        this.rentPayDate = rentPayDate;
    }

    public Integer getRentPayDate()
    {
        return rentPayDate;
    }

    public void setLastMonthWater(Long lastMonthWater)
    {
        this.lastMonthWater = lastMonthWater;
    }

    public Long getLastMonthWater()
    {
        return lastMonthWater;
    }

    public void setThisMonthWater(Long thisMonthWater)
    {
        this.thisMonthWater = thisMonthWater;
    }

    public Long getThisMonthWater()
    {
        return thisMonthWater;
    }

    public void setWaterUsage(Long waterUsage)
    {
        this.waterUsage = waterUsage;
    }

    public Long getWaterUsage()
    {
        return waterUsage;
    }

    public void setWaterUnitPrice(BigDecimal waterUnitPrice)
    {
        this.waterUnitPrice = waterUnitPrice;
    }

    public BigDecimal getWaterUnitPrice()
    {
        return waterUnitPrice;
    }

    public void setWaterRate(BigDecimal waterRate)
    {
        this.waterRate = waterRate;
    }

    public BigDecimal getWaterRate()
    {
        return waterRate;
    }

    public void setLastMonthElectricity(Long lastMonthElectricity)
    {
        this.lastMonthElectricity = lastMonthElectricity;
    }

    public Long getLastMonthElectricity()
    {
        return lastMonthElectricity;
    }

    public void setThisMonthElectricity(Long thisMonthElectricity)
    {
        this.thisMonthElectricity = thisMonthElectricity;
    }

    public Long getThisMonthElectricity()
    {
        return thisMonthElectricity;
    }

    public void setElectricityUsage(Long electricityUsage)
    {
        this.electricityUsage = electricityUsage;
    }

    public Long getElectricityUsage()
    {
        return electricityUsage;
    }

    public void setElectricityUnitPrice(BigDecimal electricityUnitPrice)
    {
        this.electricityUnitPrice = electricityUnitPrice;
    }

    public BigDecimal getElectricityUnitPrice()
    {
        return electricityUnitPrice;
    }

    public void setElectricityBill(BigDecimal electricityBill)
    {
        this.electricityBill = electricityBill;
    }

    public BigDecimal getElectricityBill()
    {
        return electricityBill;
    }

    public void setSanitationFee(BigDecimal sanitationFee)
    {
        this.sanitationFee = sanitationFee;
    }

    public BigDecimal getSanitationFee()
    {
        return sanitationFee;
    }

    public void setReceivable(BigDecimal receivable)
    {
        this.receivable = receivable;
    }

    public BigDecimal getReceivable()
    {
        return receivable;
    }

    public void setActualPay(BigDecimal actualPay)
    {
        this.actualPay = actualPay;
    }

    public BigDecimal getActualPay()
    {
        return actualPay;
    }

    public void setIsSettlement(String isSettlement)
    {
        this.isSettlement = isSettlement;
    }

    public String getIsSettlement()
    {
        return isSettlement;
    }

    public void setRoomStatus(String roomStatus)
    {
        this.roomStatus = roomStatus;
    }

    public String getRoomStatus()
    {
        return roomStatus;
    }

    public void setBillDate(Date billDate)
    {
        this.billDate = billDate;
    }

    public Date getBillDate()
    {
        return billDate;
    }

    public void setBillChart(String billChart)
    {
        this.billChart = billChart;
    }

    public String getBillChart()
    {
        return billChart;
    }
    public void setBillNumber(Long billNumber)
    {
        this.billNumber = billNumber;
    }

    public Long getBillNumber()
    {
        return billNumber;
    }

    public void setDelFlag(String delFlag)
    {
        this.delFlag = delFlag;
    }

    public String getDelFlag()
    {
        return delFlag;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
                .append("billId", getBillId())
                .append("unit", getUnit())
                .append("roomId", getRoomId())
                .append("roomNum", getRoomNum())
                .append("rent", getRent())
                .append("deposit", getDeposit())
                .append("keyCard", getKeyCard())
                .append("rentPayDate", getRentPayDate())
                .append("lastMonthWater", getLastMonthWater())
                .append("thisMonthWater", getThisMonthWater())
                .append("waterUsage", getWaterUsage())
                .append("waterUnitPrice", getWaterUnitPrice())
                .append("waterRate", getWaterRate())
                .append("lastMonthElectricity", getLastMonthElectricity())
                .append("thisMonthElectricity", getThisMonthElectricity())
                .append("electricityUsage", getElectricityUsage())
                .append("electricityUnitPrice", getElectricityUnitPrice())
                .append("electricityBill", getElectricityBill())
                .append("sanitationFee", getSanitationFee())
                .append("receivable", getReceivable())
                .append("actualPay", getActualPay())
                .append("isSettlement", getIsSettlement())
                .append("roomStatus", getRoomStatus())
                .append("billDate", getBillDate())
                .append("billChart", getBillChart())
                .append("billNumber", getBillNumber())
                .append("delFlag", getDelFlag())
                .append("createBy", getCreateBy())
                .append("createTime", getCreateTime())
                .append("updateBy", getUpdateBy())
                .append("updateTime", getUpdateTime())
                .append("remark", getRemark())
                .toString();
    }
}
